/**
 ***************************************(C) COPYRIGHT 2019 USTC***************************************
 * @file       bsp_SPI.h
 * @brief      this file contains the common defines and functions prototypes for 
 *             the bsp_SPI.c driver
 * @note         
 * @Version    V1.0.0
 * @Date           
 ***************************************(C) COPYRIGHT 2019 USTC***************************************
 */

#ifndef __BSP_SPI_H__
#define __BSP_SPI_H__

#include "spi.h"


#define USE_IST8310 //是否使用IST8310磁力计，不使用注释定义

//如果用了IST8310，DMA传输23个字节，如果不用，少7个字节，为16个字节
#if defined(USE_IST8310)
#define DMA_RX_NUM 23
#else
#define DMA_RX_NUM 16
#endif

//mpu6500原始数据在缓冲区buf的位置
#define MPU6500_RX_BUF_DATA_OFFSET 1


//ist83100原始数据在缓冲区buf的位置
#define IST8310_RX_BUF_DATA_OFFSET 16

#define MPU6500_TEMPERATURE_PID_KP 1600.0f //温度控制PID的kp
#define MPU6500_TEMPERATURE_PID_KI 0.2f    //温度控制PID的ki
#define MPU6500_TEMPERATURE_PID_KD 0.0f    //温度控制PID的kd

#define Latitude_At_ShenZhen 22.57025f
#define Latitude_At_HeFei 31.49213f

#define MPU6500_TEMPERATURE_PID_MAX_OUT 4500.0f  //温度控制PID的max_out
#define MPU6500_TEMPERATURE_PID_MAX_IOUT 4400.0f //温度控制PID的max_iout

#define INS_DELTA_TICK 1 //任务调用的间隔

#define INS_TASK_INIT_TIME 7 //任务开始初期 delay 一段时间

#define MPU6500_TEMP_PWM_MAX 5000 //mpu6500控制温度的设置TIM的重载值，即给PWM最大为 MPU6500_TEMP_PWM_MAX - 1

//获取姿态角指针地址后，对应姿态角的地址偏移量 fp32类型
#define INS_YAW_ADDRESS_OFFSET 0
#define INS_PITCH_ADDRESS_OFFSET 1
#define INS_ROLL_ADDRESS_OFFSET 2

#define INS_GYRO_X_ADDRESS_OFFSET 0
#define INS_GYRO_Y_ADDRESS_OFFSET 1
#define INS_GYRO_Z_ADDRESS_OFFSET 2

#define INS_ACCEL_X_ADDRESS_OFFSET 0
#define INS_ACCEL_Y_ADDRESS_OFFSET 1
#define INS_ACCEL_Z_ADDRESS_OFFSET 2

extern uint8_t mpu6500_spi_rxbuf[DMA_RX_NUM];//原始数据

extern  float INS_gyro[3] ;
extern  float INS_accel[3] ;
extern  float INS_mag[3];

extern  float INS_Angle[3] ;      //欧拉角 单位 rad 0-yaw-右转为负 1-pitch-车头朝上为负 2-roll-右侧朝上为负
extern  float INS_quat[4] ; //四元数
extern 	float	polish_angle_offset[3];
extern	float polish_angle_delta[3];

extern float *meg_fp,*insquat;

extern uint8_t first_temperate;
extern uint8_t AHRS_inted_flag;
extern TIM_HandleTypeDef htim3;
extern DMA_HandleTypeDef hdma_spi5_rx;
extern DMA_HandleTypeDef hdma_spi5_tx;
void SENSER_init(void);
void AHRS_process(void);	
#endif

